package es.gesfutbol.domini.implementacio;

import java.util.Date;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import es.gesfutbol.domini.IJornada;

@Entity
@Table (name="jornada")
public class Jornada implements IJornada {

	/**
	 * 
	 */
	private static final long serialVersionUID = -1268719112481722812L;

	private Long idJornada;
		
	private int numero;
	
	private Date data;
	
	private boolean estaActiu;
	
	private Lliga lliga;
	
	private Set<Partit> partits;
	
	public Jornada(){
		
	}

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="idJornada", nullable=false, precision=10, scale=0)
	public Long getIdJornada() {
		return idJornada;
	}

	public void setIdJornada(Long idJornada) {
		this.idJornada = idJornada;
	}

	@Column(name="numero", nullable=false, precision=10, scale=0)
	public int getNumero() {
		return numero;
	}

	public void setNumero(int numero) {
		this.numero = numero;
	}
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name="data" ,nullable=false, length=11)
	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}
	
	@Column(name="estaActiu", nullable=true, columnDefinition="tinyint(1) default 1")
	public boolean isEstaActiu() {
		return estaActiu;
	}

	public void setEstaActiu(boolean estaActiu) {
		this.estaActiu = estaActiu;
	}

	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="idLliga")
	public Lliga getLliga() {
		return lliga;
	}

	public void setLliga(Lliga lliga) {
		this.lliga = lliga;
	}

	@OneToMany(fetch=FetchType.LAZY, mappedBy="jornada", cascade=CascadeType.ALL)
	public Set<Partit> getPartits() {
		return partits;
	}

	public void setPartits(Set<Partit> partits) {
		this.partits = partits;
	}
}
